<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('修改边缘设备')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <div class="tabs-container">
            <ul class="nav nav-tabs">
                <li class=""><a data-toggle="tab" href="#tab-1" aria-expanded="true">设备详细</a>
                </li>
                <li class=""><a data-toggle="tab" href="#tab-2" aria-expanded="false">物模型</a>
                </li>
                <li class="active"><a data-toggle="tab" href="#tab-3" aria-expanded="false">监测统计</a>
                </li>
            </ul>
            <div class="tab-content">
                <div id="tab-1" class="tab-pane">
                    <div class="panel-body">
                        <form class="form-horizontal" id="form-user-edit" th:object="${device}">
                            <input type="hidden" id="deviceId" th:value="*{id}">
                            <h4 class="form-header h4">基本信息</h4>
                            <div class="form-group">
                                <label class="col-sm-3 control-label is-required">设备名称：</label>
                                <div class="col-sm-8">
                                    <input name="devicesName" th:field="*{devicesName}" class="form-control" type="text" required>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-3 control-label">经度：</label>
                                <div class="col-sm-8">
                                    <input name="pointX" th:field="*{pointX}" class="form-control" type="text">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-3 control-label">纬度：</label>
                                <div class="col-sm-8">
                                    <input name="pointY" th:field="*{pointY}" class="form-control" type="text">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-sm-3 control-label">高度：</label>
                                <div class="col-sm-8">
                                    <input name="hight" th:field="*{hight}" class="form-control" type="text">
                                </div>
                            </div>
                            <h4 class="form-header h4">其他信息</h4>
                            <div class="form-group">
                                <label class="col-sm-3 control-label">描述：</label>
                                <div class="col-sm-8">
                                    <textarea name="remark" class="form-control">[[*{remark}]]</textarea>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <div id="tab-2" class="tab-pane">
                    <div class="panel-body">
                        <div class="btn-group-sm" id="toolbar" role="group">
                            <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="system:model:add">
                                <i class="fa fa-plus"></i> 添加
                            </a>
                            <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:model:edit">
                                <i class="fa fa-edit"></i> 修改
                            </a>
                            <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:model:remove">
                                <i class="fa fa-remove"></i> 删除
                            </a>
                            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:model:export">
                                <i class="fa fa-download"></i> 导出
                            </a>
                        </div>
                        <div class="col-sm-12 select-table table-striped">
                            <table id="bootstrap-table"></table>
                        </div>
                    </div>
                </div>
                <div id="tab-3" class="tab-pane active">
                    <div class="wrapper wrapper-content animated fadeInRight">
                    <div class="row">
                        <div class="col-sm-6">
                            <div class="ibox float-e-margins">
                                <div class="ibox-title">
                                    <h5>折线图</h5>
                                    <div class="ibox-tools">
                                        <a class="collapse-link">
                                            <i class="fa fa-chevron-up"></i>
                                        </a>
                                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                                            <i class="fa fa-wrench"></i>
                                        </a>
                                        <ul class="dropdown-menu dropdown-user">
                                            <li><a href="#">选项1</a>
                                            </li>
                                            <li><a href="#">选项2</a>
                                            </li>
                                        </ul>
                                        <a class="close-link">
                                            <i class="fa fa-times"></i>
                                        </a>
                                    </div>
                                </div>
                                <div class="ibox-content">
                                    <div class="echarts" id="echarts-line-chart"></div>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="ibox float-e-margins">
                                <div class="ibox-title">
                                    <h5>K线图</h5>
                                    <div class="ibox-tools">
                                        <a class="collapse-link">
                                            <i class="fa fa-chevron-up"></i>
                                        </a>
                                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                                            <i class="fa fa-wrench"></i>
                                        </a>
                                        <ul class="dropdown-menu dropdown-user">
                                            <li><a href="#">选项1</a>
                                            </li>
                                            <li><a href="#">选项2</a>
                                            </li>
                                        </ul>
                                        <a class="close-link">
                                            <i class="fa fa-times"></i>
                                        </a>
                                    </div>
                                </div>
                                <div class="ibox-content">
                                    <div class="echarts" id="echarts-k-chart"></div>
                                </div>
                            </div>
                        </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: datetimepicker-js" />
    <script th:src="@{/mqtt/mqtt.min.js}"></script>
    <th:block th:include="include :: echarts-js" />
    <script th:inline="javascript">
    //=======tab3========
        var editFlag = [[${@permission.hasPermi('system:model:edit')}]];
        var removeFlag = [[${@permission.hasPermi('system:model:remove')}]];
        var datas = [[${@dict.getType('iot_model_type')}]];
        var datatypes = [[${@dict.getType('iot_model_data_type')}]];
        var prefix = ctx + "system/model";

        $(function() {
            var options = {
                url: prefix + "/getList",
                createUrl: prefix + "/add",
                updateUrl: prefix + "/edit/{id}",
                removeUrl: prefix + "/remove",
                exportUrl: prefix + "/export",
                modalName: "通用物模型",
                pagination: false,
                sidePagination: "client",
                height: $(window).height() - 166,
                columns: [{
                    checkbox: true
                },
                {
                    field: 'modelId',
                    title: '物模型ID',
                    visible: false
                },
                {
                    field: 'modelName',
                    title: '物模型名称'
                },
                {
                    field: 'productId',
                    title: '设备ID',
                    visible: false
                },
                {
                    field: 'productName',
                    title: '设备名称'
                },
                {
                    field: 'identifier',
                    title: '编码'
                },
                {
                    field: 'type',
                    title: '模型类别',
                    align: "left",
		            formatter: function(value, item, index) {
		            	return $.table.selectDictLabel(datas, item.type);
		            }
                },
                {
                    field: 'datatype',
                    title: '数据类型',
                    align: "left",
		            formatter: function(value, item, index) {
		            	return $.table.selectDictLabel(datatypes, item.datatype);
		            }
                },
                {
                    field: 'specs',
                    title: '数据定义',
                    formatter: function (value, row, index) {
		        		return specsTools(row);
		        	}
                },
                {
                    visible: editFlag == 'hidden' ? false : true,
		        	title: '是否首页显示',
		        	align: 'isTop',
		        	formatter: function (value, row, index) {
		        		return statusTools(row);
		        	}
                },
                {
                    visible: editFlag == 'hidden' ? false : true,
		        	title: '是否实时监测',
		        	align: 'isMonitor',
		        	formatter: function (value, row, index) {
		        		return statusTools(row);
		        	}
                },
                {
                    field: 'remark',
                    title: '备注',
                    visible: false
                },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function(value, row, index) {
                        var actions = [];
                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.modelId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.modelId + '\')"><i class="fa fa-remove"></i>删除</a>');
                        return actions.join('');
                    }
                }]
            };
            $.table.init(options);
        });

        function statusTools(row) {
		    if (row.status == 1) {
    			return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="enable(\'' + row.modelId + '\')"></i> ';
    		} else {
    			return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="disable(\'' + row.modelId + '\')"></i> ';
    		}
		}

		function specsTools(row) {
		    var specs = JSON.parse(row.specs);
		    var htmStr = '<div class="cell"><div data-v-71a82d5e="">';
		    if (row.datatype == 'decimal' || row.datatype == 'integer') {
                htmStr += '<span style="width:50%;display:inline-block;">最大值：<span style="color:#F56C6C">'+specs.max+'</span></span>';
                htmStr += '<span style="width:50%;display:inline-block;">最小值：<span style="color:#F56C6C">'+specs.min+'</span></span>';
                htmStr += '<br>';
                htmStr += '<span style="width:50%;display:inline-block;">步长：<span style="color:#F56C6C">'+specs.step+'</span></span>';
                htmStr += '<span style="width:50%;display:inline-block;">单位：<span style="color:#F56C6C">'+specs.unit+'</span></span>';
                htmStr += '</div>';
                htmStr += '</div>';
    		} else if (row.datatype == 'bool') {
    			htmStr += '<span style="width:50%;display:inline-block;">0：<span style="color:#F56C6C">'+specs.falseText+'</span></span>';
                htmStr += '<span style="width:50%;display:inline-block;">1：<span style="color:#F56C6C">'+specs.trueText+'</span></span>';
    		} else if (row.datatype == 'array') {
    		    htmStr += '<span style="width:50%;display:inline-block;">数组类型：<span style="color:#F56C6C">'+specs.arrayType+'</span></span>';
    		} else if (row.datatype == 'string') {
    		    htmStr += '<span style="width:50%;display:inline-block;">最大长度：<span style="color:#F56C6C">'+specs.maxLength+'</span></span>';
    		} else if (row.datatype == 'enum') {
    		    var enumList = specs.enumList;
    			$.each(enumList, function(i,val){
                    htmStr += '<span style="width:50%;display:inline-block;">'+val.value+'：<span style="color:#F56C6C">'+val.text+'</span></span>';
                    if((i+1)%2 == 0 && i+1 != enumList.length){
                        htmStr += '<br>';
                    }
                });
    		} else {

    		}
    		return htmStr;
		}



		//=======tab3=====
		let date = [];
        let data = [];

		var mqtt = mqtt;
        console.log(mqtt);
        var clientId = 'mqttjs_' + Math.random().toString(16).substr(2, 8)
        var host = 'ws://172.20.0.71:8083/mqtt'

        var options = {
          keepalive: 60,
          clientId: clientId,
          protocolId: 'MQTT',
          protocolVersion: 4,
          clean: true,
          reconnectPeriod: 1000,
          connectTimeout: 30 * 1000,
        }

        var client = mqtt.connect(host, options)

        //消息订阅
        client.on('connect', () => {
          console.log('Client connected:' + clientId)
          // Subscribe
          client.subscribe('/iot-node/test01/dev0903/monitor/post')
        })

        client.on('message', (topic, message, packet) => {
            var msg = JSON.parse(message.toString());
            console.log(msg);
            date.push(msg.date);
            data.push(msg.humidity);
            if(date.length>1000){
                date.shift();
                data.shift();
            }
            charts();
          //console.log('Received Message: ' + message.toString() + '\nOn topic: ' + topic)
        })

        client.on('error', (err) => {
          console.log('连接异常: ', err)
          client.end()
        })

        client.on('reconnect', () => {
          console.log('重新连接...')
        })

//========Echarts=======
        charts();
        function charts () {
	        var lineChart = echarts.init(document.getElementById("echarts-line-chart"));

	        var lineoption = {
              tooltip: {
                trigger: 'axis'
              },
              grid:{
                x:40,
                x2:2
              },
              title: {
                left: 'center',
                text: '设备温度监控'
              },
              xAxis: {
                type: 'category',
                boundaryGap: false,
                data: date
              },
              yAxis: {
                type: 'value',
                boundaryGap: [0, '50%'],
                axisLabel: {
                  formatter: '{value}℃'
                }
              },
              grid:{
                x:40,
                x2:2
              },
              dataZoom: [
                {
                  type: 'inside',
                  start: 50,
                  end: 100
                },
                {
                  start: 0,
                  end: 10
                }
              ],
              series: [
                {
                  name: '温度',
                  type: 'line',
                  symbol: 'none',
                  sampling: 'lttb',
                  itemStyle: {
                    color: 'rgb(255, 70, 131)'
                  },
                  areaStyle: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                      {
                        offset: 0,
                        color: 'rgb(255, 158, 68)'
                      },
                      {
                        offset: 1,
                        color: 'rgb(255, 70, 131)'
                      }
                    ])
                  },
                  data: data
                }
              ]
            };
	        lineChart.setOption(lineoption);
	        $(window).resize(lineChart.resize);
	        console.log(data);


	        var kChart = echarts.init(document.getElementById("echarts-k-chart"));
	        var koption = {
	            title : {
	                text: '2013年上半年上证指数'
	            },
	            tooltip : {
	                trigger: 'axis',
	                formatter: function (params) {
	                    var res = params[0].seriesName + ' ' + params[0].name;
	                    res += '<br/>  开盘 : ' + params[0].value[0] + '  最高 : ' + params[0].value[3];
	                    res += '<br/>  收盘 : ' + params[0].value[1] + '  最低 : ' + params[0].value[2];
	                    return res;
	                }
	            },
	            legend: {
	                data:['上证指数']
	            },
	            grid:{
	                x:40,
	                x2:2
	            },
	            dataZoom : {
	                show : true,
	                realtime: true,
	                start : 50,
	                end : 100
	            },
	            xAxis : [
	                {
	                    type : 'category',
	                    boundaryGap : true,
	                    axisTick: {onGap:false},
	                    splitLine: {show:false},
	                    data : [
	                        "2013/1/24", "2013/1/25", "2013/1/28", "2013/1/29", "2013/1/30",
	                        "2013/1/31", "2013/2/1", "2013/2/4", "2013/2/5", "2013/2/6",
	                        "2013/2/7", "2013/2/8", "2013/2/18", "2013/2/19", "2013/2/20",
	                        "2013/2/21", "2013/2/22", "2013/2/25", "2013/2/26", "2013/2/27",
	                        "2013/2/28", "2013/3/1", "2013/3/4", "2013/3/5", "2013/3/6",
	                        "2013/3/7", "2013/3/8", "2013/3/11", "2013/3/12", "2013/3/13",
	                        "2013/3/14", "2013/3/15", "2013/3/18", "2013/3/19", "2013/3/20",
	                        "2013/3/21", "2013/3/22", "2013/3/25", "2013/3/26", "2013/3/27",
	                        "2013/3/28", "2013/3/29", "2013/4/1", "2013/4/2", "2013/4/3",
	                        "2013/4/8", "2013/4/9", "2013/4/10", "2013/4/11", "2013/4/12",
	                        "2013/4/15", "2013/4/16", "2013/4/17", "2013/4/18", "2013/4/19",
	                        "2013/4/22", "2013/4/23", "2013/4/24", "2013/4/25", "2013/4/26",
	                        "2013/5/2", "2013/5/3", "2013/5/6", "2013/5/7", "2013/5/8",
	                        "2013/5/9", "2013/5/10", "2013/5/13", "2013/5/14", "2013/5/15",
	                        "2013/5/16", "2013/5/17", "2013/5/20", "2013/5/21", "2013/5/22",
	                        "2013/5/23", "2013/5/24", "2013/5/27", "2013/5/28", "2013/5/29",
	                        "2013/5/30", "2013/5/31", "2013/6/3", "2013/6/4", "2013/6/5",
	                        "2013/6/6", "2013/6/7", "2013/6/13"
	                    ]
	                }
	            ],
	            yAxis : [
	                {
	                    type : 'value',
	                    scale:true,
	                    boundaryGap: [0.01, 0.01]
	                }
	            ],
	            series : [
	                {
	                    name:'上证指数',
	                    type:'k',
	                    data:[ // 开盘，收盘，最低，最高
	                        [2320.26,2302.6,2287.3,2362.94],
	                        [2300,2291.3,2288.26,2308.38],
	                        [2295.35,2346.5,2295.35,2346.92],
	                        [2347.22,2358.98,2337.35,2363.8],
	                        [2360.75,2382.48,2347.89,2383.76],
	                        [2383.43,2385.42,2371.23,2391.82],
	                        [2377.41,2419.02,2369.57,2421.15],
	                        [2425.92,2428.15,2417.58,2440.38],
	                        [2411,2433.13,2403.3,2437.42],
	                        [2432.68,2434.48,2427.7,2441.73],
	                        [2430.69,2418.53,2394.22,2433.89],
	                        [2416.62,2432.4,2414.4,2443.03],
	                        [2441.91,2421.56,2415.43,2444.8],
	                        [2420.26,2382.91,2373.53,2427.07],
	                        [2383.49,2397.18,2370.61,2397.94],
	                        [2378.82,2325.95,2309.17,2378.82],
	                        [2322.94,2314.16,2308.76,2330.88],
	                        [2320.62,2325.82,2315.01,2338.78],
	                        [2313.74,2293.34,2289.89,2340.71],
	                        [2297.77,2313.22,2292.03,2324.63],
	                        [2322.32,2365.59,2308.92,2366.16],
	                        [2364.54,2359.51,2330.86,2369.65],
	                        [2332.08,2273.4,2259.25,2333.54],
	                        [2274.81,2326.31,2270.1,2328.14],
	                        [2333.61,2347.18,2321.6,2351.44],
	                        [2340.44,2324.29,2304.27,2352.02],
	                        [2326.42,2318.61,2314.59,2333.67],
	                        [2314.68,2310.59,2296.58,2320.96],
	                        [2309.16,2286.6,2264.83,2333.29],
	                        [2282.17,2263.97,2253.25,2286.33],
	                        [2255.77,2270.28,2253.31,2276.22],
	                        [2269.31,2278.4,2250,2312.08],
	                        [2267.29,2240.02,2239.21,2276.05],
	                        [2244.26,2257.43,2232.02,2261.31],
	                        [2257.74,2317.37,2257.42,2317.86],
	                        [2318.21,2324.24,2311.6,2330.81],
	                        [2321.4,2328.28,2314.97,2332],
	                        [2334.74,2326.72,2319.91,2344.89],
	                        [2318.58,2297.67,2281.12,2319.99],
	                        [2299.38,2301.26,2289,2323.48],
	                        [2273.55,2236.3,2232.91,2273.55],
	                        [2238.49,2236.62,2228.81,2246.87],
	                        [2229.46,2234.4,2227.31,2243.95],
	                        [2234.9,2227.74,2220.44,2253.42],
	                        [2232.69,2225.29,2217.25,2241.34],
	                        [2196.24,2211.59,2180.67,2212.59],
	                        [2215.47,2225.77,2215.47,2234.73],
	                        [2224.93,2226.13,2212.56,2233.04],
	                        [2236.98,2219.55,2217.26,2242.48],
	                        [2218.09,2206.78,2204.44,2226.26],
	                        [2199.91,2181.94,2177.39,2204.99],
	                        [2169.63,2194.85,2165.78,2196.43],
	                        [2195.03,2193.8,2178.47,2197.51],
	                        [2181.82,2197.6,2175.44,2206.03],
	                        [2201.12,2244.64,2200.58,2250.11],
	                        [2236.4,2242.17,2232.26,2245.12],
	                        [2242.62,2184.54,2182.81,2242.62],
	                        [2187.35,2218.32,2184.11,2226.12],
	                        [2213.19,2199.31,2191.85,2224.63],
	                        [2203.89,2177.91,2173.86,2210.58],
	                        [2170.78,2174.12,2161.14,2179.65],
	                        [2179.05,2205.5,2179.05,2222.81],
	                        [2212.5,2231.17,2212.5,2236.07],
	                        [2227.86,2235.57,2219.44,2240.26],
	                        [2242.39,2246.3,2235.42,2255.21],
	                        [2246.96,2232.97,2221.38,2247.86],
	                        [2228.82,2246.83,2225.81,2247.67],
	                        [2247.68,2241.92,2231.36,2250.85],
	                        [2238.9,2217.01,2205.87,2239.93],
	                        [2217.09,2224.8,2213.58,2225.19],
	                        [2221.34,2251.81,2210.77,2252.87],
	                        [2249.81,2282.87,2248.41,2288.09],
	                        [2286.33,2299.99,2281.9,2309.39],
	                        [2297.11,2305.11,2290.12,2305.3],
	                        [2303.75,2302.4,2292.43,2314.18],
	                        [2293.81,2275.67,2274.1,2304.95],
	                        [2281.45,2288.53,2270.25,2292.59],
	                        [2286.66,2293.08,2283.94,2301.7],
	                        [2293.4,2321.32,2281.47,2322.1],
	                        [2323.54,2324.02,2321.17,2334.33],
	                        [2316.25,2317.75,2310.49,2325.72],
	                        [2320.74,2300.59,2299.37,2325.53],
	                        [2300.21,2299.25,2294.11,2313.43],
	                        [2297.1,2272.42,2264.76,2297.1],
	                        [2270.71,2270.93,2260.87,2276.86],
	                        [2264.43,2242.11,2240.07,2266.69],
	                        [2242.26,2210.9,2205.07,2250.63],
	                        [2190.1,2148.35,2126.22,2190.1]
	                    ]
	                }
	            ]
	        };
	        kChart.setOption(koption);
	        $(window).resize(kChart.resize);

	    }
    </script>
</body>
</html>